package principal;

import java.awt.Color;
import java.awt.Graphics;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Random;

public class Repositorio {

	private Objeto objeto;
	private Camera camera;
	private Luz luz;
	private Vetor u;
	private double xs;
	private double ys;
	private List<Ponto> pontosTela;
	private String nomeArquivo;

	private Random random;


	private Color gerarCorAleatoria(){
		return new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256));		
	}
	
	
	public void preparaTela(){
		for(int i = 0; i< this.objeto.getQtdPontos() ; i++){
			
			
			double x = this.camera.getDistancia() * this.objeto.getPontosEntrada().get(i).getX() /this.objeto.getPontosEntrada().get(i).getZ();
			double y = this.camera.getDistancia() * this.objeto.getPontosEntrada().get(i).getY() / this.objeto.getPontosEntrada().get(i).getZ();
			
			this.pontosTela.add(new Ponto(x + this.camera.getHx()/2,this.camera.getHy()/2 - y,this.objeto.getPontosEntrada().get(i).getZ()));			
		}
	}
	
	
	public Graphics pintarTelaFlat(Graphics graphics)
	{
		
		int[] x = new int[4];
		int[] y = new int[4];
		double[] z = new double[3];
		
		x[0] = 0;
		y[0] = 0;
		x[1] = 0;
		y[1] = (int) (this.camera.getHy() + 1);
		x[2] = (int) (this.camera.getHx() + 1);
		y[2] = (int) (this.camera.getHy() + 1);
		x[3] = (int) (this.camera.getHx() + 1);
		y[3] = 0;		
		
		graphics.setColor(Color.LIGHT_GRAY);
		graphics.fillPolygon(x,y,4);		
		
		Random random = new Random(1236876);
		
		Color cor;
		
		for(int i = 0; i < this.objeto.getTrianguloEntrada().size(); i++) {
			
			int v1 = this.objeto.getTrianguloEntrada().get(i).getVertice1();
			int v2 = this.objeto.getTrianguloEntrada().get(i).getVertice2();
			int v3 = this.objeto.getTrianguloEntrada().get(i).getVertice3();
			x = new int[3];
			x[0] = (int)Math.floor(pontosTela.get(v1).getX() + 0.5);
			x[1] = (int)Math.floor(pontosTela.get(v2).getX() + 0.5);
			x[2] = (int)Math.floor(pontosTela.get(v3).getX() + 0.5);
			y = new int[3];
			y[0] = (int)Math.floor(pontosTela.get(v1).getY() + 0.5);
			y[1] = (int)Math.floor(pontosTela.get(v2).getY() + 0.5);
			y[2] = (int)Math.floor(pontosTela.get(v3).getY() + 0.5);
			
			z[0] = pontosTela.get(v1).getZ();
			z[1] = pontosTela.get(v2).getZ();
			z[2] = pontosTela.get(v3).getZ();		
			
			if(z[0] >= this.camera.getDistancia() && z[1] >= this.camera.getDistancia() && z[2] >= this.camera.getDistancia())
			{
		
				//cor = this.luz.calculaCorPhong(this.objeto.getTrianguloEntrada().get(i).getBaricentro(), this.objeto.getTrianguloEntrada().get(i).getNormal());				

				//graphics.setColor(cor);
				
				graphics.fillPolygon(x, y, 3);
				graphics.drawPolygon(x, y, 3);				
			}
		}
/*
		for(int i = 0; i<30; i++)
		{
			for(int j = 0; j<30; j++)
			{graphics.drawLine(j, i, j, i);}
		}
*/		
		
		
		return graphics;

	}
}
